package com.piece.core.framework.annotation.office;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义导出Excel数据注解,ExcelProperty注解的补充定义
 *
 * 0. {@link com.alibaba.excel.annotation.ExcelIgnoreUnannotated}没有注解的字段都不转换
 * 1. {@link com.alibaba.excel.annotation.ExcelIgnore}忽略字段
 * 2. {@link com.alibaba.excel.annotation.ExcelProperty}字段属性：
 *    说明：
 *      index：对应Excel表中的列数,默认-1
 *      value：对应Excel表中的列头
 *      converter：成员变量转换器
 * 3. {@link com.alibaba.excel.annotation.write.style.ColumnWidth}列宽，作用于类和字段上
 * 4. {@link com.alibaba.excel.annotation.write.style.HeadFontStyle}标题字体格式
 *    说明：
 *      fontName：字体名称
 *      fontHeightInPoints：字体高度
 *      italic：是否斜体
 *      strikeout：是否删除水平线
 *      color：字体颜色
 *      underline：下划线
 *      bold：是否加粗
 * 5. {@link com.alibaba.excel.annotation.write.style.HeadRowHeight}标题行高，-1代表自动行高
 * 6. {@link com.alibaba.excel.annotation.write.style.HeadStyle}标题样式
 *    说明：
 *      dataFormat：日期格式
 *      hidden：样式隐藏
 *      locked：样式锁定
 *      quotePrefix：增加`符号，数字或公式将以字符串形式展示
 *      horizontalAlignment：水平居中
 *      wrapped：文本是否换行
 *      verticalAlignment：垂直居中
 *      indent：单元格中缩进文本的空格数
 *      fillPatternType：填充类型
 *      fillBackgroundColor：背景色
 *      fillForegroundColor：前景色
 *      shrinkToFit：单元格自动大小
 * 7. {@link com.alibaba.excel.annotation.write.style.ContentFontStyle}内容字体样式
 *      @see com.alibaba.excel.annotation.write.style.HeadFontStyle
 * 8. {@link com.alibaba.excel.annotation.write.style.ContentRowHeight}单元格行高，-1代表自动行高
 * 9. {@link com.alibaba.excel.annotation.write.style.ContentStyle}内容样式
 *      @see com.alibaba.excel.annotation.write.style.HeadStyle
 * 10. {@link com.alibaba.excel.annotation.write.style.ContentLoopMerge}合并单元格注解
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelCellConvert {

    /**
     * 读取内容转表达式 如: 0=男,1=女,2=未知
     */
    String convertFormat() default "";

    /**
     * 渲染图片
     */
    boolean imageRender() default false;

    /**
     * 文字后缀,如%: 90变成90%
     */
    String suffix() default "";

    /**
     * 设置只能选择不能输入的列内容.
     */
    String[] combo() default {};

    /**
     * 设置提示内容
     */
    String prompt() default "";
}
